package com.hujing;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.TemporalAdjusters;

/**
 * @Author : hujing
 * @Date: 2025/6/3 14:08
 * 注意到LocalDateTime无法与时间戳进行转换，因为LocalDateTime没有时区，无法确定某一时刻
 */
public class LocalDateTimeDemo {

    public static void main(String[] args) {
        LocalDate d = LocalDate.now();//当前日期
        LocalTime t = LocalTime.now();//当前时间
        LocalDateTime dt = LocalDateTime.now();//当前日期时间
        System.out.println("当前时间加1小时：" + dt.plusHours(1));

        /**
         * 注意ISO 8601规定的日期和时间分隔符是T。标准格式如下：
         *
         * 日期：yyyy-MM-dd
         * 时间：HH:mm:ss
         * 带毫秒的时间：HH:mm:ss.SSS
         * 日期和时间：yyyy-MM-dd'T'HH:mm:ss
         * 带毫秒的日期和时间：yyyy-MM-dd'T'HH:mm:ss.SSS
         */
        System.out.println("当前日期：" + d);// 严格按照ISO 8601格式打印
        System.out.println("当前时间：" + t);// 严格按照ISO 8601格式打印
        System.out.println("当前日期时间：" + dt);// 严格按照ISO 8601格式打印

        // 本月第1个周一
        LocalDate firstWeekday = LocalDate.now().with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
        System.out.println(firstWeekday);
        // 本月的最后一天
        LocalDate fristDay = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
        System.out.println("本月的第一天："+fristDay);
    }
}
